#include "mydirtools.h"

#include <QDir>
#include <QStringList>
#include <QDebug>
#include <QRegExp>

MyDirTools::MyDirTools()
{

}

void MyDirTools::test()
{
//    createDirectoryRecursively("D:/test/works2/Update00/fien.test");

    QString directoryPath = "D:/test"; // 替换为你的目录路径
    QStringList filePaths = getAllFilesInDirectory(directoryPath);

    // 打印所有文件路径
    for (const QString &filePath : filePaths) {
        qDebug() << filePath;
    }
}

void MyDirTools::createDirectoryRecursively(const QString &path, bool lastIsFileName) {
    QDir dir;
//    QStringList pathParts = path.split(QRegExp("\\|/"),QString::SkipEmptyParts); // 对于 Windows，可能需要替换为 "\\"
    QString pathPartsStr = path;
    pathPartsStr = pathPartsStr.replace('\\','/');
    QStringList pathParts = pathPartsStr.split("/");
    qDebug()<<pathParts;

    QString currentPath = "";
    for (const QString &part : pathParts) {
        if (!part.isEmpty()) {
            if(part == pathParts[0]){
                currentPath += part; // 构造当前部分的完整路径
            }else{
                currentPath += "/" + part; // 构造当前部分的完整路径
            }

            if(part == pathParts.last()){
                if(lastIsFileName | part.contains('.')){
                    return;
                }
            }

            if (!dir.exists(currentPath)) {
                // 如果目录不存在，则尝试创建它
                if (!dir.mkdir(currentPath)) {
                    qDebug() << "无法创建目录:" << currentPath;
                    return; // 或者你可以选择继续尝试创建其他目录
                }else{
                    qDebug()<<"创建"<<currentPath;
                }
            }
        }
    }
    qDebug() << "目录创建成功:" << path;
}

QStringList MyDirTools::getAllFilesInDirectory(const QString &directoryPath) {
    QStringList filePaths;

    QDir dir(directoryPath);
    if (!dir.exists()) {
        qWarning() << "Directory does not exist:" << directoryPath;
        return filePaths;
    }

    QFileInfoList entries = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
    for (const QFileInfo &entry : entries) {
        if (entry.isFile()) {
            filePaths.append(entry.absoluteFilePath());
        } else if (entry.isDir()) {
            // 递归处理子目录
            filePaths.append(getAllFilesInDirectory(entry.absoluteFilePath()));
        }
    }

    return filePaths;
}
